<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Zend_Db_Table_Row - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.db.table.row.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.db.table.row.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.db.table.html">Zend_Db_Table</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.db.html">Zend_Db</a></span><br />
                        <span class="home"><a href="manual.html">Programmer's Reference Guide</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.db.table.rowset.html">Zend_Db_Table_Rowset</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.db.table.row" class="section"><div class="info"><h1 class="title">Zend_Db_Table_Row</h1></div>
    

    <div class="section" id="zend.db.table.row.introduction"><div class="info"><h1 class="title">Introduction</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Db_Table_Row</span> is a class that contains an individual row of a
            <span class="classname">Zend_Db_Table</span> object. When you run a query against a Table class,
            the result is returned in a set of <span class="classname">Zend_Db_Table_Row</span> objects. You
            can also use this object to create new rows and add them to the database table.
        </p>

        <p class="para">
            <span class="classname">Zend_Db_Table_Row</span> is an implementation of the <a href="http://www.martinfowler.com/eaaCatalog/rowDataGateway.html" class="link external">&raquo; Row Data
                Gateway</a> pattern.
        </p>
    </div>

    <div class="section" id="zend.db.table.row.read"><div class="info"><h1 class="title">Fetching a Row</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Db_Table_Abstract</span> provides methods
             <span class="methodname">find()</span> and  <span class="methodname">fetchAll()</span>, which each
            return an object of type <span class="classname">Zend_Db_Table_Rowset</span>, and the method
             <span class="methodname">fetchRow()</span>, which returns an object of type
            <span class="classname">Zend_Db_Table_Row</span>.
        </p>

        <div class="example" id="zend.db.table.row.read.example"><div class="info"><p><b>Example #1 Example of fetching a row</b></p></div>
            

            <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow($bugs-&gt;select()-&gt;where(&#039;bug_id = ?&#039;, 1));
</pre>

        </div>

        <p class="para">
            A <span class="classname">Zend_Db_Table_Rowset</span> object contains a collection of
            <span class="classname">Zend_Db_Table_Row</span> objects. See the chapter about <a href="zend.db.table.rowset.html" class="link">table rowset</a> for details.
        </p>

        <div class="example" id="zend.db.table.row.read.example-rowset"><div class="info"><p><b>Example #2 Example of reading a row in a rowset</b></p></div>
            

            <pre class="programlisting brush: php">
$bugs = new Bugs();
$rowset = $bugs-&gt;fetchAll($bugs-&gt;select()-&gt;where(&#039;bug_status = ?&#039;, 1));
$row = $rowset-&gt;current();
</pre>

        </div>

        <div class="section" id="zend.db.table.row.read.get"><div class="info"><h1 class="title">Reading column values from a row</h1></div>
            

            <p class="para">
                <span class="classname">Zend_Db_Table_Row_Abstract</span> provides accessor methods so you
                can reference columns in the row as object properties.
            </p>

            <div class="example" id="zend.db.table.row.read.get.example"><div class="info"><p><b>Example #3 Example of reading a column in a row</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow($bugs-&gt;select()-&gt;where(&#039;bug_id = ?&#039;, 1));

// Echo the value of the bug_description column
echo $row-&gt;bug_description;
</pre>

            </div>

            <blockquote class="note"><p><b class="note">Note</b>: 
                <p class="para">
                    Earlier versions of <span class="classname">Zend_Db_Table_Row</span> mapped these column
                    accessors to the database column names using a string transformation called
                    <em class="emphasis">inflection</em>.
                </p>

                <p class="para">
                    Currently, <span class="classname">Zend_Db_Table_Row</span> does not implement
                    inflection. Accessed property names need to match the spelling of the column
                    names as they appear in your database.
                </p>
            </p></blockquote>
        </div>

        <div class="section" id="zend.db.table.row.read.to-array"><div class="info"><h1 class="title">Retrieving Row Data as an Array</h1></div>
            

            <p class="para">
                You can access the row&#039;s data as an array using the
                 <span class="methodname">toArray()</span> method of the Row object. This returns an
                associative array of the column names to the column values.
            </p>

            <div class="example" id="zend.db.table.row.read.to-array.example"><div class="info"><p><b>Example #4 Example of using the toArray() method</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow($bugs-&gt;select()-&gt;where(&#039;bug_id = ?&#039;, 1));

// Get the column/value associative array from the Row object
$rowArray = $row-&gt;toArray();

// Now use it as a normal array
foreach ($rowArray as $column =&gt; $value) {
    echo &quot;Column: $column\n&quot;;
    echo &quot;Value:  $value\n&quot;;
}
</pre>

            </div>

            <p class="para">
                The array returned from  <span class="methodname">toArray()</span> is not updateable. You
                can modify values in the array as you can with any array, but you cannot save
                changes to this array to the database directly.
            </p>
        </div>

        <div class="section" id="zend.db.table.row.read.relationships"><div class="info"><h1 class="title">Fetching data from related tables</h1></div>
            

            <p class="para">
                The <span class="classname">Zend_Db_Table_Row_Abstract</span> class provides methods for
                fetching rows and rowsets from related tables. See the <a href="zend.db.table.relationships.html" class="link">relationship chapter</a> for more
                information on table relationships.
            </p>
        </div>
    </div>

    <div class="section" id="zend.db.table.row.write"><div class="info"><h1 class="title">Writing rows to the database</h1></div>
        

        <div class="section" id="zend.db.table.row.write.set"><div class="info"><h1 class="title">Changing column values in a row</h1></div>
            

            <p class="para">
                You can set individual column values using column accessors, similar to how the
                columns are read as object properties in the example above.
            </p>

            <p class="para">
                Using a column accessor to set a value changes the column value of the row object
                in your application, but it does not commit the change to the database yet. You can
                do that with the  <span class="methodname">save()</span> method.
            </p>

            <div class="example" id="zend.db.table.row.write.set.example"><div class="info"><p><b>Example #5 Example of changing a column in a row</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow($bugs-&gt;select()-&gt;where(&#039;bug_id = ?&#039;, 1));

// Change the value of one or more columns
$row-&gt;bug_status = &#039;FIXED&#039;;

// UPDATE the row in the database with new values
$row-&gt;save();
</pre>

            </div>
        </div>

        <div class="section" id="zend.db.table.row.write.insert"><div class="info"><h1 class="title">Inserting a new row</h1></div>
            

            <p class="para">
                You can create a new row for a given table with the
                 <span class="methodname">createRow()</span> method of the table class. You can access
                fields of this row with the object-oriented interface, but the row is not stored in
                the database until you call the  <span class="methodname">save()</span> method.
            </p>

            <div class="example" id="zend.db.table.row.write.insert.example"><div class="info"><p><b>Example #6 Example of creating a new row for a table</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$newRow = $bugs-&gt;createRow();

// Set column values as appropriate for your application
$newRow-&gt;bug_description = &#039;...description...&#039;;
$newRow-&gt;bug_status = &#039;NEW&#039;;

// INSERT the new row to the database
$newRow-&gt;save();
</pre>

            </div>

            <p class="para">
                The optional argument to the  <span class="methodname">createRow()</span> method is an
                associative array, with which you can populate fields of the new row.
            </p>

            <div class="example" id="zend.db.table.row.write.insert.example2"><div class="info"><p><b>Example #7 Example of populating a new row for a table</b></p></div>
                

                <pre class="programlisting brush: php">
$data = array(
    &#039;bug_description&#039; =&gt; &#039;...description...&#039;,
    &#039;bug_status&#039;      =&gt; &#039;NEW&#039;
);

$bugs = new Bugs();
$newRow = $bugs-&gt;createRow($data);

// INSERT the new row to the database
$newRow-&gt;save();
</pre>

            </div>

            <blockquote class="note"><p><b class="note">Note</b>: 
                <p class="para">
                    The  <span class="methodname">createRow()</span> method was called
                     <span class="methodname">fetchNew()</span> in earlier releases of
                    <span class="classname">Zend_Db_Table</span>. You are encouraged to use the new method
                    name, even though the old name continues to work for the sake of backward
                    compatibility.
                </p>
            </p></blockquote>
        </div>

        <div class="section" id="zend.db.table.row.write.set-from-array"><div class="info"><h1 class="title">Changing values in multiple columns</h1></div>
            

            <p class="para">
                <span class="classname">Zend_Db_Table_Row_Abstract</span> provides the
                 <span class="methodname">setFromArray()</span> method to enable you to set several columns
                in a single row at once, specified in an associative array that maps the column
                names to values. You may find this method convenient for setting values both for new
                rows and for rows you need to update.
            </p>

            <div class="example" id="zend.db.table.row.write.set-from-array.example"><div class="info"><p><b>Example #8 Example of using setFromArray() to set values in a new Row</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$newRow = $bugs-&gt;createRow();

// Data are arranged in an associative array
$data = array(
    &#039;bug_description&#039; =&gt; &#039;...description...&#039;,
    &#039;bug_status&#039;      =&gt; &#039;NEW&#039;
);

// Set all the column values at once
$newRow-&gt;setFromArray($data);

// INSERT the new row to the database
$newRow-&gt;save();
</pre>

            </div>
        </div>

        <div class="section" id="zend.db.table.row.write.delete"><div class="info"><h1 class="title">Deleting a row</h1></div>
            

            <p class="para">
                You can call the  <span class="methodname">delete()</span> method on a Row object. This
                deletes rows in the database matching the primary key in the Row object.
            </p>

            <div class="example" id="zend.db.table.row.write.delete.example"><div class="info"><p><b>Example #9 Example of deleting a row</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow(&#039;bug_id = 1&#039;);

// DELETE this row
$row-&gt;delete();
</pre>

            </div>

            <p class="para">
                You do not have to call  <span class="methodname">save()</span> to apply the delete; it is
                executed against the database immediately.
            </p>
        </div>
    </div>

    <div class="section" id="zend.db.table.row.serialize"><div class="info"><h1 class="title">Serializing and unserializing rows</h1></div>
        

        <p class="para">
            It is often convenient to save the contents of a database row to be used later.
            <em class="emphasis">Serialization</em> is the name for the operation that converts an
            object into a form that is easy to save in offline storage (for example, a file).
            Objects of type <span class="classname">Zend_Db_Table_Row_Abstract</span> are serializable.
        </p>

        <div class="section" id="zend.db.table.row.serialize.serializing"><div class="info"><h1 class="title">Serializing a Row</h1></div>
            

            <p class="para">
                Simply use <acronym class="acronym">PHP</acronym>&#039;s  <span class="methodname">serialize()</span> function to
                create a string containing a byte-stream representation of the Row object argument.
            </p>

            <div class="example" id="zend.db.table.row.serialize.serializing.example"><div class="info"><p><b>Example #10 Example of serializing a row</b></p></div>
                

                <pre class="programlisting brush: php">
$bugs = new Bugs();
$row = $bugs-&gt;fetchRow(&#039;bug_id = 1&#039;);

// Convert object to serialized form
$serializedRow = serialize($row);

// Now you can write $serializedRow to a file, etc.
</pre>

            </div>
        </div>

        <div class="section" id="zend.db.table.row.serialize.unserializing"><div class="info"><h1 class="title">Unserializing Row Data</h1></div>
            

            <p class="para">
                Use <acronym class="acronym">PHP</acronym>&#039;s  <span class="methodname">unserialize()</span> function to
                restore a string containing a byte-stream representation of an object. The function
                returns the original object.
            </p>

            <p class="para">
                Note that the Row object returned is in a <em class="emphasis">disconnected</em> state.
                You can read the Row object and its properties, but you cannot change values in the
                Row or execute other methods that require a database connection (for example,
                queries against related tables).
            </p>

            <div class="example" id="zend.db.table.row.serialize.unserializing.example"><div class="info"><p><b>Example #11 Example of unserializing a serialized row</b></p></div>
                

                <pre class="programlisting brush: php">
$rowClone = unserialize($serializedRow);

// Now you can use object properties, but read-only
echo $rowClone-&gt;bug_description;
</pre>

            </div>

            <blockquote class="note"><p><b class="note">Note</b>: <span class="info"><b>Why do Rows unserialize in a disconnected state?</b><br /></span>
                

                <p class="para">
                    A serialized object is a string that is readable to anyone who possesses it. It
                    could be a security risk to store parameters such as database account and
                    password in plain, unencrypted text in the serialized string. You would not
                    want to store such data to a text file that is not protected, or send it in an
                    email or other medium that is easily read by potential attackers. The reader of
                    the serialized object should not be able to use it to gain access to your
                    database without knowing valid credentials.
                </p>
            </p></blockquote>
        </div>

        <div class="section" id="zend.db.table.row.serialize.set-table"><div class="info"><h1 class="title">Reactivating a Row as Live Data</h1></div>
            

            <p class="para">
                You can reactivate a disconnected Row, using the  <span class="methodname">setTable()</span>
                method. The argument to this method is a valid object of type
                <span class="classname">Zend_Db_Table_Abstract</span>, which you create. Creating a Table
                object requires a live connection to the database, so by reassociating the Table
                with the Row, the Row gains access to the database. Subsequently, you can change
                values in the Row object and save the changes to the database.
            </p>

            <div class="example" id="zend.db.table.row.serialize.set-table.example"><div class="info"><p><b>Example #12 Example of reactivating a row</b></p></div>
                

                <pre class="programlisting brush: php">
$rowClone = unserialize($serializedRow);

$bugs = new Bugs();

// Reconnect the row to a table, and
// thus to a live database connection
$rowClone-&gt;setTable($bugs);

// Now you can make changes to the row and save them
$rowClone-&gt;bug_status = &#039;FIXED&#039;;
$rowClone-&gt;save();
</pre>

            </div>
        </div>
    </div>

    <div class="section" id="zend.db.table.row.extending"><div class="info"><h1 class="title">Extending the Row class</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Db_Table_Row</span> is the default concrete class that extends
            <span class="classname">Zend_Db_Table_Row_Abstract</span>. You can define your own concrete
            class for instances of Row by extending
            <span class="classname">Zend_Db_Table_Row_Abstract</span>. To use your new Row class to store
            results of Table queries, specify the custom Row class by name either in the
            <var class="varname">$_rowClass</var> protected member of a Table class, or in the array
            argument of the constructor of a Table object.
        </p>

        <div class="example" id="zend.db.table.row.extending.example"><div class="info"><p><b>Example #13 Specifying a custom Row class</b></p></div>
            

            <pre class="programlisting brush: php">
class MyRow extends Zend_Db_Table_Row_Abstract
{
    // ...customizations
}

// Specify a custom Row to be used by default
// in all instances of a Table class.
class Products extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;products&#039;;
    protected $_rowClass = &#039;MyRow&#039;;
}

// Or specify a custom Row to be used in one
// instance of a Table class.
$bugs = new Bugs(array(&#039;rowClass&#039; =&gt; &#039;MyRow&#039;));
</pre>

        </div>

        <div class="section" id="zend.db.table.row.extending.overriding"><div class="info"><h1 class="title">Row initialization</h1></div>
            

            <p class="para">
                If application-specific logic needs to be initialized when a row is constructed,
                you can select to move your tasks to the  <span class="methodname">init()</span> method,
                which is called after all row metadata has been processed. This is recommended over
                the  <span class="methodname">__construct()</span> method if you do not need to alter the
                metadata in any programmatic way.
            </p>

            <div class="example" id="zend.db.table.row.init.usage.example"><div class="info"><p><b>Example #14 Example usage of init() method</b></p></div>
                

                <pre class="programlisting brush: php">
class MyApplicationRow extends Zend_Db_Table_Row_Abstract
{
    protected $_role;

    public function init()
    {
        $this-&gt;_role = new MyRoleClass();
    }
}
</pre>

            </div>
        </div>

        <div class="section" id="zend.db.table.row.extending.insert-update"><div class="info"><h1 class="title">Defining Custom Logic for Insert, Update, and Delete in Zend_Db_Table_Row</h1></div>
            

            <p class="para">
                The Row class calls protected methods  <span class="methodname">_insert()</span>,
                 <span class="methodname">_update()</span>, and  <span class="methodname">_delete()</span> before
                performing the corresponding operations <b><tt>INSERT</tt></b>,
                <b><tt>UPDATE</tt></b>, and <b><tt>DELETE</tt></b>. You can add logic to
                these methods in your custom Row subclass.
            </p>

            <p class="para">
                If you need to do custom logic in a specific table, and the custom logic must occur
                for every operation on that table, it may make more sense to implement your custom
                code in the  <span class="methodname">insert()</span>,  <span class="methodname">update()</span> and
                 <span class="methodname">delete()</span> methods of your Table class. However, sometimes it
                may be necessary to do custom logic in the Row class.
            </p>

            <p class="para">
                Below are some example cases where it might make sense to implement custom logic in
                a Row class instead of in the Table class:
            </p>

            <div class="example" id="zend.db.table.row.extending.overriding-example1"><div class="info"><p><b>Example #15 Example of custom logic in a Row class</b></p></div>
                

                <div class="example-contents"><p>
                    The custom logic may not apply in all cases of operations on the respective
                    Table. You can provide custom logic on demand by implementing it in a Row class
                    and creating an instance of the Table class with that custom Row class
                    specified. Otherwise, the Table uses the default Row class.
                </p></div>

                <div class="example-contents"><p>
                    You need data operations on this table to record the operation to a
                    <span class="classname">Zend_Log</span> object, but only if the application
                    configuration has enabled this behavior.
                </p></div>

                <pre class="programlisting brush: php">
class MyLoggingRow extends Zend_Db_Table_Row_Abstract
{
    protected function _insert()
    {
        $log = Zend_Registry::get(&#039;database_log&#039;);
        $log-&gt;info(Zend_Debug::dump($this-&gt;_data,
                                    &quot;INSERT: $this-&gt;_tableClass&quot;,
                                    false)
                  );
    }
}

// $loggingEnabled is an example property that depends
// on your application configuration
if ($loggingEnabled) {
    $bugs = new Bugs(array(&#039;rowClass&#039; =&gt; &#039;MyLoggingRow&#039;));
} else {
    $bugs = new Bugs();
}
</pre>

            </div>

            <div class="example" id="zend.db.table.row.extending.overriding-example2"><div class="info"><p><b>Example #16 Example of a Row class that logs insert data for multiple tables</b></p></div>
                

                <div class="example-contents"><p>
                    The custom logic may be common to multiple tables. Instead of implementing the
                    same custom logic in every one of your Table classes, you can implement the
                    code for such actions in the definition of a Row class, and use this Row in
                    each of your Table classes.
                </p></div>

                <div class="example-contents"><p>
                    In this example, the logging code is identical in all table classes.
                </p></div>

                <pre class="programlisting brush: php">
class MyLoggingRow extends Zend_Db_Table_Row_Abstract
{
    protected function _insert()
    {
        $log = Zend_Registry::get(&#039;database_log&#039;);
        $log-&gt;info(Zend_Debug::dump($this-&gt;_data,
                                    &quot;INSERT: $this-&gt;_tableClass&quot;,
                                    false)
                  );
    }
}

class Bugs extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;bugs&#039;;
    protected $_rowClass = &#039;MyLoggingRow&#039;;
}

class Products extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;products&#039;;
    protected $_rowClass = &#039;MyLoggingRow&#039;;
}
</pre>

            </div>
        </div>

        <div class="section" id="zend.db.table.row.extending.inflection"><div class="info"><h1 class="title">Define Inflection in Zend_Db_Table_Row</h1></div>
            

            <p class="para">
                Some people prefer that the table class name match a table name in the
                <acronym class="acronym">RDBMS</acronym> by using a string transformation called
                <em class="emphasis">inflection</em>.
            </p>

            <p class="para">
                <span class="classname">Zend_Db</span> classes do not implement inflection by default. See
                the chapter about <a href="zend.db.table.html#zend.db.table.extending.inflection" class="link">extending
                    inflection</a> for an explanation of this policy.
            </p>

            <p class="para">
                If you prefer to use inflection, then you must implement the transformation
                yourself, by overriding the  <span class="methodname">_transformColumn()</span> method in a
                custom Row class, and using that custom Row class when you perform queries against
                your Table class.
            </p>

            <div class="example" id="zend.db.table.row.extending.inflection.example"><div class="info"><p><b>Example #17 Example of defining an inflection transformation</b></p></div>
                

                <div class="example-contents"><p>
                    This allows you to use an inflected version of the column name in the
                    accessors. The Row class uses the  <span class="methodname">_transformColumn()</span>
                    method to change the name you use to the native column name in the database
                    table.
                </p></div>

                <pre class="programlisting brush: php">
class MyInflectedRow extends Zend_Db_Table_Row_Abstract
{
    protected function _transformColumn($columnName)
    {
        $nativeColumnName = myCustomInflector($columnName);
        return $nativeColumnName;
    }
}

class Bugs extends Zend_Db_Table_Abstract
{
    protected $_name = &#039;bugs&#039;;
    protected $_rowClass = &#039;MyInflectedRow&#039;;
}

$bugs = new Bugs();
$row = $bugs-&gt;fetchNew();

// Use camelcase column names, and rely on the
// transformation function to change it into the
// native representation.
$row-&gt;bugDescription = &#039;New description&#039;;
</pre>

            </div>

            <p class="para">
                You are responsible for writing the functions to perform inflection transformation.
                Zend Framework does not provide such a function.
            </p>
        </div>
    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.db.table.html">Zend_Db_Table</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.db.html">Zend_Db</a></span><br />
                        <span class="home"><a href="manual.html">Programmer's Reference Guide</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.db.table.rowset.html">Zend_Db_Table_Rowset</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Programmer's Reference Guide</a></li>
  <li class="header up"><a href="manual.html">Programmer's Reference Guide</a></li>
  <li class="header up"><a href="reference.html">Zend Framework Reference</a></li>
  <li class="header up"><a href="zend.db.html">Zend_Db</a></li>
  <li><a href="zend.db.adapter.html">Zend_Db_Adapter</a></li>
  <li><a href="zend.db.statement.html">Zend_Db_Statement</a></li>
  <li><a href="zend.db.profiler.html">Zend_Db_Profiler</a></li>
  <li><a href="zend.db.select.html">Zend_Db_Select</a></li>
  <li><a href="zend.db.table.html">Zend_Db_Table</a></li>
  <li class="active"><a href="zend.db.table.row.html">Zend_Db_Table_Row</a></li>
  <li><a href="zend.db.table.rowset.html">Zend_Db_Table_Rowset</a></li>
  <li><a href="zend.db.table.relationships.html">Zend_Db_Table Relationships</a></li>
  <li><a href="zend.db.table.definition.html">Zend_Db_Table_Definition</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>